class Container {
    static of( x ) {
        return new Container( x )
    }
    constructor( value ) {
         this._value = value
    }
    map( fn ) {
        return Container.of( fn( this._value ) )
    }
}
class Maybe {
    static of( x ) {
        return new Maybe( x )
    }
    constructor( value ) {
         this._value = value
    }
    
    map( fn ) {
        return this.isNothing() ? this : Maybe.of( fn( this._value ) )
    }
    isNothing() {
        return this._value === null || this._value === undefined
    }
}
module.exports = { Maybe, Container }